package com.chenliang.anno.biz;

import com.chenliang.anno.service.DemoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

/**
 * @program: springboot_all
 * @description:
 * @author: 陈亮
 * @create: 2022-04-23 12:54
 */
@RestController
public class DemoBiz {


    /**
     * 我们DemoService有两个实现类, DemoServiceImpl01 和DemoServiceImpl02 都是直接添加Service注解的没有指定名称,那默认的bean的名称就是首字母小写
     *
     * @Resource注解 默认通过名称注入, 通过 demoService 名称查询不到的时候,通过类型注入,而通过类型注入的时候,就会找到这个接口的2个实现类, 不能确定使用哪一个就会抛出异常
     * @Autowire注解 默认通过类型注入, 如果存在多个类型就是通过名称注入; 这个地方接口有2个类型实现,注入bean就报错,然后尝试名称注入
     * ----
     * @Autowired
     * @Qualifier("demoServiceImpl01") 实际注入bean的名称
     * private DemoService demoService;
     * ---
     * @Primary
     * @Service
     * 这样就是多个bean被Service注解变成bean,在被注入的时候发现多个,优先使用@Primary标识的bean
     */
    @Autowired
    //@Qualifier("demoServiceImpl01")
    private DemoService demoService;


    @PostMapping("/d")
    public void test() {
        System.out.println(demoService.hi());
    }
}
